<?php
require_once '../conexao/ConexaoPDO.php';
require_once '../interfaces/IRepositorioPessoa.php';
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of RepositorioPessoa
 *
 * @author Livyson
 */
class RepositorioPessoa implements IRepositorioPessoa{
    //put your code here
    private $conexaoPDO;

    public function __construct() {
        $this->conexaoPDO = new ConexaoPDO();
    }
    
    public function atualizar(Pessoa $pessoa) {
         try {
            $con = $this->conexaoPDO->abrir();
            $sql = "UPDATE PESSOA SET nome=:nome, dataNascimento=:dataNascimento,
				     cpf=:cpf, rg=:rg,
				     salario=:salario, dataRecebimento=:dataRecebimento,
				     saldoPagamento=:saldoPagamento, login=:login, senha=:senha,
				     respostaSecreta=:respostaSecreta, email=:email WHERE codigo=:codigo"; 
            $statement = $con->prepare($sql);
            $statement->bindValue(":nome", $pessoa->getNome());
            $statement->bindValue(":dataNascimento", $pessoa->getDataNascimento());
            $statement->bindValue(":cpf", $pessoa->getCpf());
            $statement->bindValue(":rg", $pessoa->getRg());
            $statement->bindValue(":salario", $pessoa->getSalario());
            $statement->bindValue(":dataRecebimento", $pessoa->getDataRecebimento());
            $statement->bindValue(":saldoPagamento", $pessoa->getSaldoPagamento());
            $statement->bindValue(":login", $pessoa->getLogin());
            $statement->bindValue(":senha", $pessoa->getSenha());
            $statement->bindValue(":respostaSecreta", $pessoa->getRespostaSecreta());
            $statement->bindValue(":email", $pessoa->getEmail());
            $statement->bindValue(":codigo", $pessoa->getCodigo());
            $statement->execute() or die("ERRO: ".mysql_error());
        } catch (Exception $ex) {
            echo ("Erro: " . $ex->getMessage());
        }
        $this->conexaoPDO->desconectar();
    }
    public function cadastrar(Pessoa $pessoa) {
        try { 
            $con = $this->conexaoPDO->abrir(); 
            $sql = "INSERT INTO PESSOA (nome, dataNascimento, cpf, rg, salario,
					 dataRecebimento, saldoPagamento, login, senha,
                                         respostaSecreta, email) values
					(:nome, :dataNascimento, :cpf, 
                                        :rg, :salario, :dataRecebimento,
                                        :saldoPagamento, :login, :senha,
				        :respostaSecreta, :email)";
            $statement = $con->prepare($sql);
            $statement->bindValue(":nome", $pessoa->getNome());
            $statement->bindValue(":dataNascimento", $pessoa->getDataNascimento());
            $statement->bindValue(":cpf", $pessoa->getCpf());
            $statement->bindValue(":rg", $pessoa->getRg());
            $statement->bindValue(":salario", $pessoa->getSalario());
            $statement->bindValue(":dataRecebimento", $pessoa->getDataRecebimento());
            $statement->bindValue(":saldoPagamento", $pessoa->getSaldoPagamento());
            $statement->bindValue(":login", $pessoa->getLogin());
            $statement->bindValue(":senha", $pessoa->getSenha());
            $statement->bindValue(":respostaSecreta", $pessoa->getRespostaSecreta());
            $statement->bindValue(":email", $pessoa->getEmail());
            $statement->execute() or die("ERRO: ".mysql_error());
        } catch (Exception $ex) {
            echo ("Erro: " . $ex->getMessage());
        }
        $this->conexaoPDO->desconectar();
    }
    public function listar() {
        try {
            $con = $this->conexaoPDO->abrir();
            $sql = "SELECT * FROM Pessoa";
            $pessoas = $con->query($sql)->fetchAll();
            
        } catch (Exception $ex) {
            echo ("Erro: " . $ex->getMessage());
        }
        $this->conexaoPDO->desconectar();

        return $pessoas;
    }
    public function listarCondicionando($where) {
        $pessoas = null;
        try {
            $con = $this->conexaoPDO->abrir();
            $sql = "SELECT * FROM Pessoa ".$where." ";
            $pessoas = $con->query($sql)->fetchAll(); 
        } catch (Exception $ex) {
            echo ("Erro: " . $ex->getMessage());
        }
        $this->conexaoPDO->desconectar();

        return $pessoas;
    }
    public function login(Pessoa $pessoa) {
    // TODO Auto-generated method stub		
        $retorno = false;
        try {
            $con = $this->conexaoPDO->abrir();
            $sql = "SELECT * FROM Pessoa WHERE login='".$pessoa->getLogin()."' AND senha='".$pessoa->getSenha()."'";
            $pessoas = $con->query($sql)->fetchAll();
            if(count($pessoas)==1){
                    $retorno = true;
            }
        } catch (Exception $ex) {
            echo ("Erro: " . $ex->getMessage());
        }
        $this->conexaoPDO->desconectar();
        
        return $retorno;
    }
    public function procurar(Pessoa $pessoa) {
        try {
            $con = $this->conexaoPDO->abrir();
            $sql = "SELECT * FROM Pessoa WHERE nome='".$pessoa->getNome()."' OR codigo='".$pessoa->getCodigo()."'";
            $pessoa = $con->query($sql)->fetch() or die("ERRO: ".mysql_error());
        } catch (Exception $ex) {
            echo ("Erro: " . $ex->getMessage());
        }
        $this->conexaoPDO->desconectar();

        return $pessoa;
    }
    public function remover(Pessoa $pessoa) {
        try {
            $con = $this->conexaoPDO->abrir();
            //DELETA AS CONTAS DO USUÁRIO
            $sql = "DELETE FROM CONTA WHERE codPessoa=:codigo";
            $statement = $con->prepare($sql);
            $statement->bindValue(":codigo", $pessoa->getCodigo());
            $statement->execute() or die("ERRO: ".  mysql_error());
            //DELETA O USUÁRIO
            $sql = "DELETE FROM Pessoa WHERE codigo=:codigo";
            $statement = $con->prepare($sql);
            $statement->bindValue(":codigo", $pessoa->getCodigo());
            $statement->execute() or die("ERRO: ".  mysql_error());
        } catch (Exception $ex) {
            echo ("Erro: " . $ex->getMessage());
        }
        $this->conexaoPDO->desconectar();
    }
}

?>
